← Writeups

3 Multi endpoint race conditions

Deseo comprarme el producto "lightweight leet leather jacket" pero cuento unicamente con 100 yestacuesta1337 y esta cuesta 1337 dolares es decir me falta 1237sinembargotambienpuedocomprargiftcardspor10 sin embargo tambien puedo comprar gift cards por 10 esta me entregara un codigo de cupon que puedo reclamar luego el cupon me entrega un descuento. Al comprarla obtengo esta vista:

Store credit: $90.00 
Your order is on its way!
Name 	       Price 	Quantity 	
Gift Card 	$10.00 	   1 	
Total:   	$10.00

You have bought the following gift cards:
Code
5nXhYcOvSK

Obtuve el codigo 5nXhYcOvSK

Volviendo: al comprar la giftcard hice un post

POST /cart HTTP/2
Host: 0a050040037c3fbb811c989b00da009e.web-security-academy.net 

productId=2&redir=PRODUCT&quantity=1

Code KBhI12MUH6 5nXhYcOvSK

Endpoints:

  • tras una compra : /cart/checkout
  • carrito: /cart
  • reclamar giftcard: POST /gift-card y en el body gift-card=5nXhYcOvSK en caso al reclamarlo me aumento en 10 $ y no me permite utilizarlo como descuento, es decir : coupon code != gift card
  • carrito + coupon code: /cart?couponError=INVALID_COUPON&coupon=KBhI12MUH6

Es posible que exista una race window que permita comprar varias giftcards aprovechando una fraccion de segundo.